home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
MacHack 1997
/
MacHack 1997.toast
/
Hacks
/
Hacks ’93
/
sort
/
Source
/
shell.c
< prev
next >
Wrap
C/C++ Source or Header
|
1993-06-17
|
815b
|
39 lines
#ifndef THINK_C
#include <Types.h>
#endif
#include "sortdata.h"
void main(long maxdata, long* sortdata, swp sw, cmp cm, short* stopflag);
void main(long maxdata, long* sortdata, swp sw, cmp cm, short* stopflag)
{
long gap, index, select, *pindex, *pselect;
Boolean swaped;
gap = maxdata >> 1;
while (gap > 0) {
do {
swaped = false;
pindex = sortdata;
select = gap;
pselect = &sortdata[gap];
for (index = 0; index < maxdata - gap; index++, pindex++, select++, pselect++) {
if (*stopflag) {
return;
}
if ((*cm)(index, select, *pindex, *pselect) > 0) {
(*sw)(index, select, pindex, pselect);
swaped = true;
}
}
index = select - 1;
pindex = pselect -1;
select = index - gap;
pselect = &sortdata[select];
} while (swaped);
gap >>= 1;
}
}